// pages/student/xiugaiziliao/xiugaiziliao.js
Page({
  data: {
    userInfo: {},
    bioLength: 0,
    canEditName: false,
    errorMsg: '',
    isLoading: false
  },

  onLoad: function() {
    this.fetchUserInfo();
  },

  // 获取用户信息
  fetchUserInfo: function() {
    // 先从本地存储获取基本信息
    const userInfo = wx.getStorageSync('userInfo') || {};
    const token = wx.getStorageSync('token');
    
    this.setData({
      userInfo,
      bioLength: userInfo.bio ? userInfo.bio.length : 0
    });
    
    // 获取应用实例以获取服务器地址
    const app = getApp();
    const serverUrl = app.globalData.serverUrl || 'http://localhost:3000';
    
    // 确保有用户ID
    const userId = userInfo.userId || userInfo.id;
    if (!userId) {
      console.error('缺少用户ID，无法获取用户资料');
      wx.showToast({
        title: '用户信息不完整',
        icon: 'none'
      });
      return;
    }
    
    console.log('请求用户资料，用户ID:', userId);
    
    // 从服务器获取最新用户信息
    wx.request({
      url: `${serverUrl}/api/users/profile`,
      method: 'GET',
      data: {
        userId: userId  // 显式传递用户ID
      },
      header: {
        'Authorization': 'Bearer ' + token
      },
      success: (res) => {
        console.log('获取用户资料响应:', res);
        if (res.statusCode === 200) {
          // 处理不同格式的响应数据
          let profileData = res.data;
          if (res.data.data) {
            profileData = res.data.data;
          }
          
          // 确保学号/工号信息正确显示
          let idNumber = '';
          if (profileData.role === 'student') {
            idNumber = profileData.studentId || profileData.userId;
          } else {
            idNumber = profileData.employeeId || profileData.userId;
          }
          profileData.idNumber = idNumber || '未设置';
          
          this.setData({
            userInfo: profileData,
            bioLength: profileData.bio ? profileData.bio.length : 0
          });
          
          // 更新本地存储
          wx.setStorageSync('userInfo', profileData);
        } else {
          wx.showToast({
            title: '获取资料失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('获取用户资料请求失败:', err);
        wx.showToast({
          title: '网络连接失败',
          icon: 'none'
        });
      }
    });
  },

  // 选择头像
  chooseAvatar: function() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        
        // 预览头像
        this.setData({
          'userInfo.avatar': tempFilePath
        });
        
        // 上传头像到服务器
        this.uploadAvatar(tempFilePath);
      }
    });
  },

  // 上传头像
  uploadAvatar: function(filePath) {
    const app = getApp();
    const serverUrl = app.globalData.serverUrl || 'http://localhost:3000';
    const token = wx.getStorageSync('token');
    
    // 使用当前用户的ID
    const userId = this.data.userInfo.userId || wx.getStorageSync('userId');
    
    wx.showLoading({
      title: '上传中...',
    });
    
    wx.uploadFile({
      url: `${serverUrl}/api/user/avatar`,
      filePath: filePath,
      name: 'avatar',
      header: {
        'Authorization': token ? `Bearer ${token}` : ''
      },
      formData: {
        userId: userId
      },
      success: (res) => {
        const data = JSON.parse(res.data);
        if (data.success) {
          wx.showToast({
            title: '头像上传成功',
            icon: 'success'
          });
          
          // 更新本地存储的用户信息
          const userInfo = wx.getStorageSync('userInfo') || {};
          userInfo.avatar = data.data.avatarUrl;
          wx.setStorageSync('userInfo', userInfo);
          
          // 更新页面显示
          this.setData({
            'userInfo.avatar': serverUrl + data.data.avatarUrl
          });
        } else {
          wx.showToast({
            title: '头像上传失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('头像上传失败:', err);
        wx.showToast({
          title: '头像上传失败',
          icon: 'none'
        });
      },
      complete: () => {
        wx.hideLoading();
      }
    });
  },

  // 输入姓名
  inputName: function(e) {
    this.setData({
      'userInfo.name': e.detail.value,
      errorMsg: ''
    });
  },

  // 输入手机号
  inputPhone: function(e) {
    this.setData({
      'userInfo.phone': e.detail.value,
      errorMsg: ''
    });
  },

  // 输入邮箱
  inputEmail: function(e) {
    this.setData({
      'userInfo.email': e.detail.value,
      errorMsg: ''
    });
  },

  // 输入个人简介
  inputBio: function(e) {
    this.setData({
      'userInfo.bio': e.detail.value,
      bioLength: e.detail.value.length,
      errorMsg: ''
    });
  },

  // 保存资料
  saveProfile: function() {
    const { name, phone, email, bio } = this.data.userInfo;
    
    // 验证输入
    if (!name) {
      this.setData({ errorMsg: '请输入姓名' });
      return;
    }
    
    if (phone && !/^1[3-9]\d{9}$/.test(phone)) {
      this.setData({ errorMsg: '请输入正确的手机号码' });
      return;
    }
    
    if (email && !/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(email)) {
      this.setData({ errorMsg: '请输入正确的邮箱地址' });
      return;
    }
    
    this.setData({ isLoading: true });
    
    // 获取应用实例以获取服务器地址
    const app = getApp();
    const serverUrl = app.globalData.serverUrl || 'http://localhost:3000';
    const token = wx.getStorageSync('token');
    const userInfo = this.data.userInfo;
    
    // 确保有用户ID
    const userId = userInfo.userId || userInfo.id;
    if (!userId) {
      this.setData({
        errorMsg: '用户信息不完整，无法保存',
        isLoading: false
      });
      return;
    }
    
    // 发送保存请求
    wx.request({
      url: `${serverUrl}/api/users/profile`,
      method: 'PUT',
      header: {
        'Authorization': 'Bearer ' + token
      },
      data: {
        userId: userId,
        name,
        phone,
        email,
        bio
      },
      success: (res) => {
        console.log('保存资料响应:', res);
        if (res.statusCode === 200) {
          wx.showToast({
            title: '保存成功',
            icon: 'success',
            duration: 2000
          });
          
          // 更新本地存储
          wx.setStorageSync('userInfo', this.data.userInfo);
          
          // 延迟返回上一页
          setTimeout(() => {
            wx.navigateBack();
          }, 2000);
        } else {
          this.setData({
            errorMsg: res.data.message || '保存失败，请重试',
            isLoading: false
          });
        }
      },
      fail: (err) => {
        console.error('保存请求失败:', err);
        this.setData({
          errorMsg: '网络错误，请稍后重试',
          isLoading: false
        });
      }
    });
  }
});